ReadWriteAccessPoint.java
package org.codefilarete.reflection;
/**
* Contract for classes that want to share both abilities to write and read an access point : it inherits from
* {@link Accessor} and {@link Mutator}.
*
* @author Guillaume Mary
* @see Accessors
*/
public interface ReadWriteAccessPoint<C, T>
extends Accessor<C, T>, Mutator<C, T>,
ReversibleMutator<C, T>, ReversibleAccessor<C, T> {
// Naming note : those methods can't be named toAccessor() and toMutator() because there return types are not
// compatible on AccessorChainMutator chain, because this particular class is not symmetric and return an
// intermediary accessor : the last before the mutator.
Accessor<C, T> getReader();
Mutator<C, T> getWriter();
@Override
default Accessor<C, T> toAccessor() {
return getReader();
}
@Override
default Mutator<C, T> toMutator() {
return getWriter();
}
}